Code coverage report for services/oblique-features.service.coffee

Statements: 90.74% (49 / 54)      Branches: 83.33% (15 / 18)      Functions: 87.5% (14 / 16)      Lines: 90.48% (19 / 21)      Ignored: none     

All files » services/ » oblique-features.service.coffee
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 4664   16 16         1 16   11 11 5         6       23         1 1         1   1 1 1       3 3      
angular.module('oblique-features')
.factory 'featuresService', ['$log', '$http', '$interval', ($log, $http, $interval) ->
  new class FeaturesService
    fileSource: null
    intervalId: null
    baseRequiredForAllFeatures: false
    featuresEnabledStatus:
      base: true
    constructor: ->
      @setFeatureEnabledData {}
    checkFeatureEnabled: (featureName) ->
      if not featureName? then featureName = 'base'
      if @baseRequiredForAllFeatures
        if not @featuresEnabledStatus[featureName]?
          @featuresEnabledStatus['base']
        else
          @featuresEnabledStatus['base'] && @featuresEnabledStatus[featureName]
      else
        if @featuresEnabledStatus[featureName]? then @featuresEnabledStatus[featureName] else true
    toggleFeature: (featureName) ->
      @featuresEnabledStatus[featureName] = not @featuresEnabledStatus[featureName]
    setFeatureEnabledData: (data) =>
      if not data.base? then data.base = true
      @featuresEnabledStatus = data
    setBaseFeatureRequiredForAllFeatures: (reqdForAll) =>
      @baseRequiredForAllFeatures = reqdForAll
    setRemoteSource: (sourceURI, repeatIn, repeatCount) ->
      @fileSource = sourceURI
      Iif repeatIn?
        @intervalId = $interval(@checkRemoteSource, repeatIn, repeatCount)
        if repeatIn < 60000 then $log.warn 'Warning:  Checking source at extremely short intervals is not advised'
      @checkRemoteSource()
    checkRemoteSource: =>
      return $http.get(@fileSource)
      .then (response) =>
        @setFeatureEnabledData response.data
        console.log 'Returning: ', response.data
        return response.data
      .catch (errors) ->
        $log.error "Errors encountered retrieving feature status information: ", errors
    setHardCodedSource: (data) =>
      @setFeatureEnabledData data
      if @intervalId?
        $interval.cancel @intervalId
]